package com.board.controller;


import cn.hutool.core.bean.BeanUtil;
import com.board.dto.RoleDto;
import com.board.entity.Role;
import com.board.form.RoleListForm;
import com.board.param.RoleListParam;
import com.board.service.RoleService;
import com.board.util.PageInfo;
import com.board.util.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author 小叶
 * @since 2024年04月03日
 */
@RestController
@RequestMapping("/role")
@Api(tags = "角色接口")
public class RoleController {
    @Autowired
    private RoleService roleService;

    /**
     * 查询角色
     * @param rlf 查询条件，包含角色名
     * @return 返回查询到的数据
     */
    @GetMapping("/list")
    @ApiOperation("条件查询角色")
    public Result loadAllRoles(RoleListForm rlf){
        PageInfo<RoleDto> pageInfo=roleService.loadAllRoles(BeanUtil.toBean(rlf, RoleListParam.class));
        return Result.success("查询角色信息成功",pageInfo);
    }

    /**
     * 根据id查询角色
     * @param roleId 要查询的角色id
     * @return 返回查询的角色信息
     */
    @PostMapping("/id查询角色")
    @ApiOperation("根据id查询角色")
    public Result findRoleById(Integer roleId){
        RoleDto dto= roleService.findRoleById(roleId);
        return Result.success("查询成功",dto);
    }

    /**
     * 新增角色
     * @param roleName 新增的角色名
     * @return 返回新增的角色信息
     */
    @PostMapping("/addRole")
    @ApiOperation("新增角色")
    public Result addRole(String roleName){
        Role role= roleService.addRole(roleName);
        return Result.success("新增角色成功",role);
    }

    /**
     * 删除角色
     * @param roleId 要删除的角色id
     * @return 返回删除的角色信息
     */
    @PostMapping("/deleteRole")
    @ApiOperation("删除角色")
    public Result deleteRole(Integer roleId){
        roleService.deleteRole(roleId);
        return Result.success("删除角色成功",null);
    }


    //查找所有角色(不分页)
    @GetMapping("/findAllRole")
    public Result findAllRole(){
        List<Role> list= roleService.findAllRole();
        return Result.success("查询所有角色成功",list);
    }

}

